package com.sajus.billing.client.delegate;


import java.util.List;

import com.sajus.billing.client.dto.AccountDTO;
import com.sajus.billing.client.dto.DiscountDTO;
import com.sajus.billing.client.dto.OfferingDTO;
import com.sajus.billing.client.dto.PriceInfoDTO;
import com.sajus.billing.client.dto.PromoOfferingDTO;
import com.sajus.billing.client.dto.PromotionDTO;
import com.sajus.billing.client.dto.RateMappingDTO;
import com.sajus.billing.client.dto.ServiceAttributeDTO;
import com.sajus.billing.client.dto.ServiceDTO;
import com.sajus.billing.client.dto.ServiceTypeDTO;

public interface IServiceTypeManager {
	
	ServiceTypeDTO getServiceType( Integer id );
	
	ServiceDTO getService( Integer id );
	
	PromotionDTO getPromotion( Integer id );
	
	PromoOfferingDTO getPromotionOffering( Integer id );
	
	OfferingDTO getOffering( Integer id );
	
	DiscountDTO getDiscount( Integer id );
	
	ServiceAttributeDTO getServiceAttribute( Integer id );
	
	PriceInfoDTO getPriceInfo( Integer id );
	
	List<ServiceDTO> getServices( AccountDTO account );
	
	List<ServiceTypeDTO> getServiceTypes();
	
	List<OfferingDTO> getOfferings( PromotionDTO promtion );
	
	List<OfferingDTO> getOfferings();
	
	List<PromoOfferingDTO> getPromoOfferings( PromotionDTO promotion );
	
	List<PromotionDTO> getPromotions();
	
	List<RateMappingDTO> getRateMappings();
	
	RateMappingDTO getRateMapping( Integer id );
	
	void saveServiceType( ServiceTypeDTO serviceType );
	void saveService( ServiceDTO service );
	void saveServiceAttribute( ServiceAttributeDTO sa );
	void saveOffering( OfferingDTO off );
	void savePromotion( PromotionDTO promo );
	void savePromoOffering( PromoOfferingDTO promoOffering );
	void saveDiscount( DiscountDTO discount );
	void savePriceInfo( PriceInfoDTO priceInfo );
	void saveRateMapping( RateMappingDTO rateMapping );
	
	public void doUsageBilling();
	
	public List<ServiceDTO> getAllServices();
	
	public void getActivateDevices();
}
